package com.easy.service;

import java.util.List;

import java.util.Map;

import com.easy.utils.Sys;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.support.DaoSupport;
import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils;

import com.easy.dao.IStaffDao;
import com.easy.entity.Staff;
import com.easy.utils.DigestPassUtil;
import com.easy.utils.PageUtil;

import javax.servlet.http.HttpSession;

@Service
public class StaffService {
    @Autowired
    IStaffDao iStaffDao;


    public boolean login(Map params, HttpSession session) {
        Staff staff_data = iStaffDao.selectStaffByName(params);

        if (staff_data != null) {
            // 后台
            String pass_data = staff_data.getLogin_pass();
            // 前台
            // MD5加密
            String pass_param = (String) params.get("login_pass");
        
            boolean isok = DigestPassUtil.loginpass(pass_data, pass_param);
            if (isok) {
                //将用户信息保存到session中,判断登录状态
                session.setAttribute(Sys.LOGINSTAFF, staff_data);
                //登录成功后，把相应的弹窗内容修改
                session.removeAttribute("nologin");
            }
            return isok;
        }
        return false;
    }

    public List<Staff> getList(Map params) {

        //处理分页参数
        //start=(page-1)*limit
        PageUtil.start(params);
        return iStaffDao.getList(params);
    }

    public int getCount(Map params) {

        return iStaffDao.getCount(params);
    }

    public int del(Map params) {

        return iStaffDao.del(params);
    }

    public int add(Map params) {
        /*给新增用户一个默认密码*/
        String hex_pass = DigestPassUtil.newPass(null);
        params.put("login_pass", hex_pass);
        return iStaffDao.add(params);
    }

    public boolean loginNameRepeat(Map params) {
        /*判断数据库中是否有相同的用户名*/
        int count = iStaffDao.getCountByLoginName(params);
        return count != 0;

    }

    public int edit(Map params) {
        return iStaffDao.edit(params);
    }

    public int recover(Map params) {
        return iStaffDao.recover(params);
    }

    public int dismissed(Map params) {
        return iStaffDao.dismissed(params);
    }

    public boolean resetpass(Map<String, String> params, HttpSession session) {

        //1.验证原密码是否正确,如果正确，从新加密，保存数据库
        String old_pass = params.get("login_pass");
        String new_pass = params.get("new_pass");
        String confirm_pass = params.get("confirm_pass");

        Staff staff = (Staff) session.getAttribute(Sys.LOGINSTAFF);
        if (new_pass.equals(confirm_pass) && DigestPassUtil.loginpass(staff.getLogin_pass(), old_pass)) {


            // 验证成功，  把新密码加密
            String hex_pass = DigestPassUtil.newPass(new_pass);
            //保存到数据库
            params.put("login_pass",hex_pass);
            params.put("id",staff.getId().toString());

            iStaffDao.resetpass(params);
            return true;

        }
        return false;
    }
}
